This invention relates to personal computers designed with commercially available microprocessor chip sets. More particularly, the present invention relates to a personal computer in which the central processing unit (microprocessor) is controlled to execute programs in a variety of selectable speeds to achieve software compatibility with existing application programs which, because of their specific hardware dependency, cannot be run at higher speeds.
The present invention permits one to select speeds ranging from execution speeds which simulate those below original microprocessors such as the 8088/8086 microprocessors (manufactured by Intel); speeds which simulate advanced microprocessors such as the 80286 microprocessors (manufactured by Intel); speeds which simulate the new generation microprocessors such as the 80386 microprocessors (manufactured by Intel) and any intermediate speeds.
The introduction of the personal computer has resulted in a tremendous amount of application software programs written for both the professional and for the home entertainment markets. These personal computers are designed around commercially available microprocessor chip sets which may include a plurality of microprocessors connected in an architecture which results in varying degrees of execution throughput rates.
It has also been discovered that many of the currently used copy-protected schemes currently employed by many of the software writers are dependent on microprocessor clock rates. Many of the new personal computers employing some of the new generation microprocessors with high clock rates cannot utilize the copy-protected software without data transfer errors.
Popular microprocessor chip sets widely used by personal computer manufacturers are the Intel Corporation 8088 microprocessor; the 8086 microprocessor; and the 80286 microprocessor, all having similar instruction sets. Similar instruction sets are also available for a new generation microprocessor from Intel, the 80386 microprocessor. The 80386 microprocessor has a substantially higher execution cycle rate than its predecessors, almost three time faster than the 80286. Available also from Intel is a co-processor chip, the Intel 80287, which may be used either with the 80286 or the 80386 microprocessor chips to achieve even higher execution throughput rates. Also available is a 80387 co-processor, however, this co-processor is not commercially viable at the present time.
With the availability of a software compatible microprocessor (i.e., executes the same instruction sets), it is possible to upgrade a prior art personal computer with personal computers with higher execution speeds and maintain compatibility with some application programs written for the lower speed microprocessor chip sets. While faster software compatible microprocessors are available, it is not possible, however, to simply substitute the faster microprocessor for the slower microprocessor and thereby produce a personal computer which executes at a higher speed for all of the application programs written for the slower microprocessor.
Not all application programs written for the slower microprocessors, i.e., 8088/8086 and 80286 microprocessors, are capable of running at faster microprocessor speeds even though each instruction in the program is executed in a similar manner in these machines. The inability to run some programs at higher speeds results from the fact that programmers, when writing application programs (third party software) for the slower microprocessors, take advantage of the particular execution cycle time in structuring routines which are time dependent. For example, video game programs rely upon the normal execution cycle time for the microprocessor in generating time intervals which are necessary for the programs to perform its various functions. Running the program at higher instruction execution speeds changes the resulting time intervals and thereby renders the program non-functional. Application programs which are not dependent upon the execution speed typically can be run at those higher execution speeds and obtain the same results.
Similarly copy-protected programs rely on normal execution cycle times for the microprocessor in generating time intervals which are necessary for the program to perform its various functions. These copy-protected programs do not function properly whenever the instruction execution speeds change.
It is undeniable that providing a personal computer capable of executing application programs written for slower microprocessors in a third of the time would be of a commercial advantage in the marketplace, but such a device would not be commercially viable unless it were able to execute a majority of the application programs written for slower speed microprocessors. For example, it is possible to provide a personal computer having an Intel 80386, 80287 microprocessor pair (high speed microprocessors) rather than an 80286, 80287 microprocessor pair (slower speed microprocessors) and run the high speed microprocessor at different clocking frequencies (rates), high speeds for those application programs which can run at the higher speeds and slower speeds for those application programs which are time dependent. Unfortunately, this simple clocking speed change does not result in a personal computer which is software compatible for all varieties of application programs.
It should also be realized that a change of the clock rate (microprocessor frequency) will not suffice because of the many other machine functions which may be affected.
Even though the previous microprocessor chip sets, (i.e. 8086, 8088, 80286) are software compatible, the internal design of the microprocessors is not the same. This difference in internal design, depending upon the design of the application program, i.e., does it contain a lot of program jumps, affects the execution speed of a given application program. The execution time at the high speed for the high speed microprocessor is not necessarily proportionally faster than the execution time when microprocessor clock is set to the slower normal frequency for the slow speed microprocessor. Stated differently, reducing the microprocessor clock from a high speed mode to the normal clock for the slow speed microprocessor while keeping all else the same does not result in the same execution time for a given application program to run on the high speed microprocessor as occurs if the same program is run on the slow speed microprocessor.
For the Intel 80386 microprocessor, simply reducing the clocking frequency to the clocking frequency of an 8088, or 8086, or 80286 microprocessor results in an execution speed which is faster than it would have been for the slow speed 8088 microprocessor chip. This faster execution speed results from the internal design differences which exist between the microprocessors, and the fact that the 80386 requires 32-bit fetches from memory while the 8088 requires 8-bit fetches, the 8086 requires 16-bit fetches and the 80286 requires 32-bit fetches using two 16-bit parallel paths.
The internal design difference between these microprocessors is primarily in the amount of pre-fetch buffer memory provided in the microprocessor. In the Intel 8088, there are four bytes of pre-fetch queue, in the 8086, there are six bytes of pre-fetch queue, in the 80286, there are 8 bytes of pre-fetch queue while in the 80386 there are 12 bytes of pre-fetch queue. Each microprocessor is designed to keep its pre-fetch queue full of information in order that the microprocessor can continue to execute code, which on the average, achieves a desired execution throughput rate. When program jumps occur, the contents of the pre-fetch buffer are lost. This loss of information is reflected in wasted execution time because of the time required to obtain the pre-fetch information that is discarded at the time the program jump occurs. Thus, the 8088 microprocessor, having four bytes of pre-fetch queue running at a given clocking frequency and fetching 8-bit bytes per fetch cycle would produce different execution throughput than the 80386 having 12 bytes of pre-fetch queue running at the same clocking frequency but fetching 32-bit bytes per fetch cycle. It is because of this difference in the pre-fetch buffer capacity and the rate at which 32-bit bytes are fetched from memory that the 80386 runs at a faster speed for the same application program when the 80386 microprocessor is run at the same clocking frequency as is normally used for the slower microprocessor, e.g., 8088.
Therefore, it would be advantageous to provide a personal computer which provides for a high speed microprocessor to execute application programs which are not time dependent at high speeds, but provides a lower speed execution for those application programs which are time dependent so that the time dependent application programs appear to be running at substantially the same execution speed as they would have run on the microprocessor for which they were written.